With the development of opto-electronic collection technologies and a continuously increasing high-definition digital video requirement, a video data volume is increasing, and limited heterogeneous transmission bandwidth and diversified video applications continuously pose a higher requirement on video coding efficiency. Therefore, formulation of the High Efficiency Video Coding (HEVC, High Efficient Video Coding) standard needs is started.
A basic principle of video encoding compression is using a spatial domain correlation, a temporal domain correlation, and a code word correlation to eliminate redundancy to an utmost extent. Currently, a popular method is using a block-based hybrid video coding framework to implement video compression by performing steps such as prediction (including intra-frame prediction and inter-frame prediction), transform, quantization, and entropy coding. This video coding framework shows strong vitality, and HEVC still uses this block-based hybrid video coding framework.
In the foregoing coding framework, a video sequence (sequence) includes a series of pictures (picture), and a picture is further partitioned into slices (slice), and a slice is further partitioned into blocks (block). In video encoding, encoding processing may be performed row by row from left to right and from top to bottom by using a block as a unit, starting from an upper-left corner position of a picture. In some new video coding standards, a concept of “Block” is further extended. In the H.264 standard, there is a macro block (MB, Macro Block), and an MB may further be partitioned into multiple partitions (partition, which may be used for predicting coding). In the HEVC standard, basic concepts such as “coding unit” (CU, Coding Unit), “prediction unit” (PU, Prediction Unit), and “transform unit” (TU, Transform Unit) are used; blocks are classified into multiple types of Units in terms of functions, and description is made using a new tree-based structure. For example, a CU may be partitioned into smaller CUs according to a quadtree, and the smaller CUs may further be partitioned, so as to form a quadtree structure. There is also a similar tree structure for a PU and a TU. A CU, a PU, and a TU all essentially fall into a concept of “block” block. A CU is similar to a macro block MB or a coding unit and is a basic unit for partitioning and encoding an picture. A PU may be corresponding to a prediction block, and is a basic unit for prediction and encoding; a CU is further partitioned into multiple PUs according to a partitioning mode. A TU may be corresponding to a transform block and is a basic unit for transforming prediction residual. In the HEVC standard, a CU, a PU, and a TU may be collectively referred to as a coding tree block (CTB, Coding Tree Block), or the like.
In the HEVC standard, a picture block is generally further partitioned in a quadtree partition manner. For example, when an upper-level CU is partitioned into sub-CUs (Sub-CU), a block partition flag (split_flag) is used to indicate whether to further partition a current Sub-CU downward into smaller Sub-CUs. In the prior art, determining whether to further partition a current block requires a calculation of a performance parameter such as rate distortion of multiple blocks. However, calculating, for each time, a performance parameter such as rate distortion of multiple blocks makes a calculation process relatively complex.